//冒泡排序
const a = [1,2,3,2,4,6,76,2,9,7,5,7,5,7,56,7]
function sort_1(arr){
    for(let i = 0 ; i < arr.length ; i++){
        for(let j = 0 ; j< arr.length - i ; j++){
            if(arr[j]>arr[j+1]){
                [arr[j],arr[j+1]] = [arr[j+1],arr[j]]
            }
        }
    }
    return arr
}



//选择排序
function sort_2(arr){
    var minIndex
    for (let i = 0 ; i<arr.length;i++){
        minIndex = i
        for(let j = i+1 ; j<arr.length ;j++){
            if(arr[j]<arr[minIndex]){
                minIndex = j
            }
        }
        [arr[minIndex],arr[i]] = [arr[i],arr[minIndex]]
    }
    return arr
}


//插入排序
function sort_3(arr){
    for(let i = 0 ; i <arr.length ; i++){
        for(let j = 0  ; j <= i ; j++){
            if(arr[i]>arr[j]){
                [arr[j],arr[i]] = [arr[i],arr[j]]
            }
        }
    }
    return arr
}

//快排

function sort_4(arr){
    if(arr.length <= 1)return arr
    const left = [] ;
    const right= [] ;
    const mid = arr[0];
    const mids = [] ;
    for(let i = 0 ; i<arr.length ;i++){
        if(arr[i]>mid){
            right.push(arr[i])
        }else if(arr[i]<mid){
            left.push( arr[i])
        }else{
            mids.push(arr[i])
        }
    }
    return sort_4(left).concat(mids,sort_4(right))
}
console.log(sort_4(a))